次世代の先端コンピュータ デバイス開発のキーは、マルチコア プロセッサ技術です。 FreescaleやTexas Instruments等の主な半導体ベンダーが、主要な組み込みデバイスにマルチコア アプリケーション プロセッサを導入するに伴い、組み込みOSにおけるマルチコア プロセッシング サポートが求められています。 WEC7にSMP機能を追加すればARMベースのマルチコアプラットフォームの性能向上を図ることができます。 アイウェーブは、WEC7を搭載したFreescale社のi.MX6 Quad core プロセッサのプラットフォームを使ってSMPサポートの検証を行いました。 WEC7でのSMPサポート:
WEC7の機能向上で最も重要なものは、マルチコアシステムでマルチスレッドのアプリケーションの性能向上を図ることのできるSMPをサポートすることです。 4つの同等性能のCPUコアを持つFreescaleの i.MX6 Quad coreの様なマルチコアプロセッサプラットフォームは、WEC7のSMPサポートの利点を効果的に発揮できます。
SMPが可能なカーネルは、同時に幾つかのCPUコアを使用して、異なる処理やスレッドをそれらに配分して実行します。 使用できるコアの数は、アプリケーションからのSMP APIによって決まります。 コアへのスレッドの割り当ても可能です。 SMPのもう一つの大きな利点は、単一、暴走スレッド(かなり高い優先度の)がシステムの全体性能に大きな悪影響を及ぼすのを防止することです。 シングルコアシステムでは、下図に示すように、高い優先度のスレッド1が、CPUを完全にブロックして優先度の低いスレッド2の実行に影響しています。 図1 シングルコアシステム 一方、WEC7システムのSMPでは、 暴走スレッドは4つのコアの内たった一つのみ消費し、その他のコアは他のスレッドの使用のために残されています。 カーネルは、システムのマルチコア能力を活用して残ったコアを他のスレッドに割り当てます。 図2 WEC7 SMPをサポートされたマルチコアシステム WEC 7 SMP APIを使用したスレッド及びプロセッサの割り当て 以下の表は、マルチコアシステムのWEC 7におけるSMPのスレッド及びプロセッサ割り当て機能を表したものです。
デモ アプリケーション: Freescaleのi.MX6Q プラットフォーム上のWEC7のSMP性能をデモするためのサンプルを作成します。 ・ CeGetTotalProcessors は、使用可能なプロセッサの総数を返します。(i.MX6Q の場合は4個) ・ GetCurrentProcessorNumberは、現行スレッド又はプロセスがランしているプロセッサコアの数を返します。 ・ CeSetProcessAffinity 及び CeSetThreadAffinity は、現行のプロセッサからプロセス又はスレッド用にそれぞれ引数で指定したプロセッサに変更します。 ・ CePowerOffProcessor 及び CePowerOnProcessor turns は、システム性能に影響することなく電源を最適化するよう特定のプロセッサコアをオン、オフします。 この二つの機能は、カーネルモードでのみ可能です。 アウトプット: 下図のように、現行スレッドは最初はプロセッサコア3でランしていますが、スレッドのアフィニティがSMP機能を使ってプロセッサコア4に変更されるとプロセッサコア4でランを開始します。 図: WEC7を搭載したFreescale i.MX6Q でのSMPテスト SMPのベネフィット: 1. 1つ以上のプログラムを同時に実行する場合、SMPサポートのマルチコアシステムは、異なるプログラムを異なるCPUで同時並行的にランできるので、シングルプロセッサよりも良いパフォーマンスが得られます。 2. SMP機能により、1つのコアではハードなリアルタイムアプリケーションを、UIアプリや他のアプリケーションスレッドを他のコアに載せ替えることで実行可能にします。. 3. プロセスやスレッドの分配の他、コア自身の管理が可能。 ランタイム時にAPIによりメインコア以外の他のコア全てをダイナミックにオン、オフすることができ、効率的な電力使用が可能です。
i.MX6 Q7 SOM 用Windows Embedded Compact 7 BSPの発売 (PDF) WEC7 on iWave's i.MX6 Development Platform を You Tubeでご覧いただけます。